<?php

namespace app\admin\controller;

use think\Controller;
use think\Request;

class Attribute extends Base
{
    // 首页列表
    public function index()
    {

        $title = "商品属性";

        $data = \app\admin\model\Attribute::getAttrtype();

        return view("/attribute/index",[
            'title' => $title,
            'data' => $data
        ]);
    }

    // 商品添加
    public function add()
    {
        $title = "商品属性添加";

        // 获取所有的类型
        $type = \app\admin\model\Type::select();

        return view("/attribute/add",[
            'title' => $title,
            'type' => $type
        ]);
    }

    // 添加方法
    public function insert(Request $request)
    {
        $data = $request->param();

        $rule = [
            'attr_name' => "require|token",
            'type_id' => 'require'
        ];

        $validate = new \think\Validate($rule);

        if(!$validate->check($data))
        {
            $error = $validate->getError();
            $this->error($error);
            die;
        }

        \app\admin\model\Attribute::create($data,true);

        $this->success("添加成功",'admin/attribute/add');
    }

    // 商品属性编辑
    public function edit(int $id)
    {
        if(empty($id))
        {
            $this->error("参数错误",'admin/attribute/index');
            die;
        }

        $title = "修改属性";

        // 获取所有的类型
        $type = \app\admin\model\Type::select();

        // 获取当前的id所对应的一条数据
        $obj = \app\admin\model\Attribute::find($id);

        $data = $obj->getData();

        // 返回到视图中
        return view("/attribute/edit",[
            'title' => $title,
            'type' => $type,
            'data' => $data
        ]);
    }

    // 商品修改
    public function update(Request $request)
    {
        $data = $request->param();

        if(empty($data))
        {
            $this->error("不允许为空",'admin/Attribute/index');
            die;
        }

        \app\admin\model\Attribute::update($data,['id'=>$data['id']],true);

        $this->success("修改成功","admin/Attribute/index");
    }

    // 获取商品类型参数
    public function getTree(int $id)
    {
        // 正则匹配当前是否是数字格式
        if(!preg_match('/^\d+$/',$id))
        {
            $res = [
                'code' => 10001,
                'msg' => "类型错误"
            ];
            return json($res);
        }

        // 获取商品属性信息
        $data = \app\admin\model\Attribute::where('type_id',$id)->select();

        // 将获取的数据进行格式转换
        foreach($data as &$v)
        {
            // 获取数据表的原始数据
            $v = $v->getData();

            // 将数据表中的字符串格式转换成 数组格式
            $v['attr_values'] = explode(',',$v['attr_values']);
        }
        // 清空引用变量
        unset($v);

        $res = [
            'code' => 10000,
            'msg' => "请求成功",
            'data' => $data
        ];

        return json($res);
    }

    // 删除方法
    public function delete(int $id)
    {
        if(empty($id)){
            $this->error("参数错误","admin/attribute/index");
            die;
        }

        \app\admin\model\Attribute::destroy($id);

        $this->success("删除成功",'admin/attribute/index');
    }
}
